package com.txc.openfeign.common.pay.dto;


import com.txc.common.utils.pay.CommonUtil;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 代收缴费dto
 *
 * @ClassName: CollectDto
 * @Author: TXC
 * @Date: 2022-01-25 09:24
 **/
@Data
public class CollectDto {
    /**
     * 清算单位，与机构打款账号对应，判断用户打款号正确性的标志。
     */
    private String acctOrgNo;
    /**
     * 缴费流水号，由支付宝生成，对账维度之一
     */
    private String bankSerial;
    /**
     * 缴费日期，支付宝传入，对账维度之一
     */
    private String bankDate;
    /**
     * 缴费时间，格式为HH:mm
     */
    private String bankDateTime;
    /**
     * 资金编号，取值于欠费查询接口出参。
     */
    private String capitalNo;
    /**
     * 缴费方式，用于区分不同的支付宝缴费（如普通代收，实时代扣等）
     */
    private String payMode;
    /**
     * 交易金额(以分为单位)
     */
    private String rcvAmt;
    /**
     * 记录数
     */
    private String chargeCnt;
    /**
     * 明细记录项目
     */
    private List<RcvDet> rcvDet;

    public static CollectDto getInstance(Map<String, Object> body) {
        CollectDto collectDto = new CollectDto();
        collectDto.setAcctOrgNo(CommonUtil.getStrByBody(body, "acctOrgNo"));
        collectDto.setBankSerial(CommonUtil.getStrByBody(body, "bankSerial"));
        collectDto.setBankDate(CommonUtil.getStrByBody(body, "bankDate"));
        collectDto.setBankDateTime(CommonUtil.getStrByBody(body, "bankDateTime"));
        collectDto.setCapitalNo(CommonUtil.getStrByBody(body, "capitalNo"));
        collectDto.setPayMode(CommonUtil.getStrByBody(body, "payMode"));
        collectDto.setRcvAmt(CommonUtil.getStrByBody(body, "rcvAmt"));
        collectDto.setChargeCnt(CommonUtil.getStrByBody(body, "chargeCnt"));
        collectDto.setRcvDet(RcvDet.format(CommonUtil.getStrByBody(body, "rcvDet")));
        return collectDto;
    }
}
